package com.example.designer.template.inte;

/**
 * 泡茶和咖啡的步骤是相似的 只有一些细微的区别
 * 这里我们就可以把公共的地方抽取出来  只把区别部分交给子类进行具体实现
 */
public abstract class Template {

    //方法执行顺序不可变
   public final void init(){
        water();
        rush();
        pour();
        hool();
    }

    //已实现的公共方法不可以被覆盖
    final void water(){
        System.out.println("把水煮沸");
    }

    protected abstract void rush();//冲泡

    final void pour(){
        System.out.println("倒出到容器");
    }

    //给子类提供一个空实现  具体是否要实现做一些自己的操作交给子类进行  比如是否要添加调料
    //在java里这种操作叫做钩子方法
    protected void hool(){

    }
}
